const app = getApp(); // 获取全局应用实例
const baseURL = app.globalData.baseURL;

Page({
  data: {
    categories: [], // 一级分类数据
    products: [], // 商品列表数据
    curNav: 1, // 当前选中的一级分类
    baseURL: baseURL,
    leftPage: 1, // 左侧分类页码
    rightPage: 1, // 右侧商品页码
    leftHasMore: true, // 左侧是否还有更多分类
    rightHasMore: true, // 右侧是否还有更多商品
    leftLoading: false, // 左侧是否正在加载
    rightLoading: false, // 右侧是否正在加载
    statusBarHeight: getApp().globalData.statusBarHeight, // 状态栏高度
    navHeight: getApp().globalData.navHeight,       // 导航栏总高度
    tabBarHeight: getApp().globalData.tabBarHeight,  // 底部高度
  },
  // 返回到首页,因为分类是从tabbar进来的
  goBack() {
    wx.switchTab({
      url: '/pages/index/index',
    });
  },
  // 页面加载时获取分类数据
  onLoad: function () {
    this.getCategories(); // 获取一级分类数据
  },

  // 获取一级分类数据
  getCategories: function () {
    if (this.data.leftLoading || !this.data.leftHasMore) return; // 如果正在加载或没有更多数据，直接返回
    this.setData({ leftLoading: true }); // 标记为正在加载

    wx.request({
      url: `${baseURL}api/categories/?page=${this.data.leftPage}&page_size=16`,
      method: 'GET',
      success: (res) => {
        if (res.statusCode === 200) {
          const newCategories = res.data.results; // 获取新分类数据
          if(!!newCategories){
            const hasMore = !!res.data.next; // 是否还有更多数据
            this.setData({
              categories: this.data.categories.concat(newCategories), // 追加新分类数据
              leftPage: this.data.leftPage + 1, // 页码加1
              leftHasMore: hasMore, // 更新是否有更多数据
              curNav: this.data.categories.length === 0 ? newCategories[0].id : this.data.curNav, // 默认选中第一项
            });

            if (this.data.categories.length === newCategories.length) {
              this.getProducts(this.data.curNav); // 默认加载第一个分类的商品
            }
          }
        } else {
          wx.showToast({
            title: '获取分类数据失败',
            icon: 'none',
          });
        }
      },
      fail: (err) => {
        wx.showToast({
          title: '网络请求失败',
          icon: 'none',
        });
        console.error('请求失败:', err);
      },
      complete: () => {
        this.setData({ leftLoading: false }); // 标记为加载完成
      },
    });
  },

  // 获取商品列表数据
  getProducts: function (cNav) {
    if (this.data.rightLoading || !this.data.rightHasMore) return; // 如果正在加载或没有更多数据，直接返回
    this.setData({ rightLoading: true }); // 标记为正在加载

    wx.request({
      url: `${baseURL}api/categories/${cNav}/?page=${this.data.rightPage}&page_size=16`, // 将 curNav 和页码作为查询参数
      method: 'GET',
      success: (res) => {
        if (res.statusCode === 200) {
          const newProducts = res.data.products.results; // 获取新商品数据
          const hasMore = !!res.data.next; // 是否还有更多数据
          // console.log( this.data.products)
          // console.log( newProducts)
          this.setData({
            products: this.data.products.concat(newProducts), // 追加新商品数据
            rightPage: this.data.rightPage + 1, // 页码加1
            rightHasMore: hasMore, // 更新是否有更多数据
            
          });
          // console.log( this.data.products)
        }
      },
      complete: () => {
        this.setData({ rightLoading: false }); // 标记为加载完成
      },
    });
  },

  // 切换右侧商品列表
  switchRightTab: function (event) {
    const category = event.currentTarget.dataset.category; // 得到选中的id
    this.setData({
      curNav: category,
      products: [], // 清空商品列表
      rightPage: 1, // 重置页码
      rightHasMore: true, // 重置是否有更多数据
    });
    this.getProducts(category); // 加载新分类的商品
  },

  // 左侧上拉加载更多分类
  loadMoreCategories: function () {
    // console.log('左侧上拉加载更多分类')
    this.getCategories();
  },

  // 右侧上拉加载更多商品
  loadMoreProducts: function () {
    this.getProducts(this.data.curNav);
  },

  // 点击商品详情
  productDetail(event){
    const id = event.currentTarget.dataset.item.id;  // 获取点击图片的 id
    wx.navigateTo({
      url: `/pages/detail/detail?id=${id}`, // 将 id 传递过去
    });
  },

});
